import { defineStore } from "pinia";
import axios from "axios";

const useCinemaStore = defineStore('cinemaStore', {
    state() {
        return {
            cinemaList: []
        }
    },
    actions: {
        // 有一个要注意的地方，因为大部分时候方法里都要用到this，所以别手贱给actions里的方法写成箭头函数
        async getCinemaList() {
            let res = await axios({
                method: 'get',
                url: 'https://m.maizuo.com/gateway?cityId=440300&ticketFlag=1&k=1866886',
                headers: {
                    'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"16926962702329006145798145"}',
                    'X-Host': 'mall.film-ticket.cinema.list'
                }
            });
            // 要时刻记得，pinia中的actions里定义的方法，可以直接this.xxx拿到state中的数据，不用vuex中那么麻烦了
            this.cinemaList = res.data.data.cinemas;
        }
    },
    getters: {
        filterCinemaList() {
            // 由于getters其实就相当于vue在voa状态下的comupted，所以在vue组件中使用的时候是不需要加小括号的，那么这时候你想要传参进来，就要用到函数科里化了。
            return (eTicketFlag) => {
                return this.cinemaList.filter(cinema => cinema.eTicketFlag == eTicketFlag);
            }
        }
    }
});

export default useCinemaStore;

